class MVVM {
    constructor(el,data) {
        this.el = document.querySelector(el);
        this._data = data;
        this.domPool = {};

        this.init()
    }

    init() {
        this.initData();
        this.initDom();
    }

    initDom () {
        this.bindDom(this.el);
        this.bindInput(this.el)
    }

    initData() {
        const _this = this;
        this.data = {};

        for(let key in this._data) {
            Object.defineProperty(this.data,key,{
                get() {
                    return _this._data[key]
                },
                set(newValue) {
                    _this._data[key] = newValue;
                }
            });
        }
    }

    bindDom (el) {
        const childNodes = el.childNodes;
        childNodes.forEach(item => {
            if(item.nodeType === 3) {
                const _value = item.nodeValue;

                if(_value.trim().length) {

                }
            }
        })
    }

    bindInput (el) {
        const _allInputs = el.querySelectorAll('input');

        _allInputs.forEach(input => {
            const _vModel = input.getAttribute('v-model');

            if(_vModel) {
                input.addEventListener("keyup",this.handleInput.bind(this,_vModel,input),false);
            }
        })
    }

    handleInput (key,input) {
        const _value = input.value;
        this.data[key] = _value;
    }
}
